import { message } from 'antd';

// 创建一个全局消息服务
class GlobalMessage {
  private static instance: GlobalMessage;
  private messageInstance: any = null;

  // 单例模式
  public static getInstance(): GlobalMessage {
    if (!GlobalMessage.instance) {
      GlobalMessage.instance = new GlobalMessage();
    }
    return GlobalMessage.instance;
  }

  // 设置消息实例
  public setMessageInstance(instance: any) {
    this.messageInstance = instance;
  }

  // 显示成功消息
  public success(content: string) {
    if (this.messageInstance) {
      this.messageInstance.success(content);
    } else {
      // 兜底使用静态方法
      message.success(content);
    }
  }

  // 显示错误消息
  public error(content: string) {
    if (this.messageInstance) {
      this.messageInstance.error(content);
    } else {
      // 兜底使用静态方法
      message.error(content);
    }
  }

  // 显示警告消息
  public warning(content: string) {
    if (this.messageInstance) {
      this.messageInstance.warning(content);
    } else {
      // 兜底使用静态方法
      message.warning(content);
    }
  }

  // 显示信息消息
  public info(content: string) {
    if (this.messageInstance) {
      this.messageInstance.info(content);
    } else {
      // 兜底使用静态方法
      message.info(content);
    }
  }
}

// 导出单例实例
export const globalMessage = GlobalMessage.getInstance();

// 提供一个组件来初始化消息服务
import React, { useEffect } from 'react';
import { App } from 'antd';

export const GlobalMessageProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
  const { message: messageApi } = App.useApp();

  useEffect(() => {
    // 将消息实例设置到全局服务中
    globalMessage.setMessageInstance(messageApi);
    
    return () => {
      // 组件卸载时清除实例
      globalMessage.setMessageInstance(null);
    };
  }, [messageApi]);

  return <>{children}</>;
}; 